/**
 * 常见的一些封装方法
 */


/**
 * @name 通用的递归组件
 * @author xhcss.com
 * @param {*} arr 需要递归的数组
 * @param {*} parentId 递归的父级id
 * @param {*} parentName 递归的父级的id的key
 * @param {*} id 递归对比的id
 * @param {*} nonull 是否删除children=[] 空的对象，默认删除
 * @param {*} childrenName 
 * @returns 
 */
export function generalRecursion(arr, parentId = null, parentName = "parentId", id = "id", nonull = true, childrenName = 'children') {
    if (!Array.isArray(arr) || arr.length == 0) return []
    let arrs = JSON.parse(JSON.stringify(arr)) // 处理下，不然回导致改变原数组
    return arrs
        .filter((o) => o[parentName] == parentId)
        .map((v) => ((v[childrenName] = generalRecursion(data, v[id], parentName, id, nonull, childrenName)), nonull && v[childrenName] && v[childrenName].length == 0 ? delete v[childrenName] && v : v));
}

/**
 * 补0
 * @param {*} num 数字
 * @param {*} size 补的位数
 * @returns 
 */
export function addZero(num, size = 8) {
    let t = (num + '').length, // 数字的总长度
        s = ''
    let as = size - t // 获取需要补0 的位数
    // 补0
    for (let i = 0; i < as; i++) {
        s += '0'
    }
    return s + num
}

/**
 *  计算2个数之间的全部数值
 * @param {*} a 
 * @param {*} b 
 * @param {*} callback 
 */
export function calcSize(a, b, callback) {
    a = Number(a)
    b = Number(b)
    for (a; a <= b; a++) {
        callback(addZero(a))
    }
}